\section{Jamie Hanlon}

% * (1 page per member) List the main tasks undertaken by the members of the
%   group.
% * These include, amongst others, research tasks, programming, planning,
%   documentation and testing.
% * Make it clear who undertook these tasks and an estimate of how long they took.

% - worked to produce a specification
% - design and implementation of client/server classes using the sockets library
% - networking with podserver and game
% - optimising network communication with new protocol and threading (non
% polling)
% - PodServerInterface class
% - Joystick smoothing
% - Linux compilation (threads etc.)
% - OpenAL wrapper class
% - In-game menu system
% - Highscores and level locking systems
% - Game sessions and scoring system
% - random/timed skyboxes
% - All artwork and graphics in the game, including texturing
% - Level design

The following points outline my the involvement I had with different tasks in
the development of the game.

\bit

\item I produced a basis for an initial specification of the game. This was to
provide a detailed outline of the specific areas and tasks involved with the
project. From this I worked with Tom to produce a set of tasks associated with
the details of the specification and a time-chart to give ourselves some initial
targets to work towards. This was the result of several meetings with the group
and was formulated over a about two weeks.

\item Initially, I planned to use an XML-RPC library for network communication
and spent about a week reading the documentation and attempting to get it to
work with Visual Studio. As I learned more about the subject I decided that it
would be better just to use the basic Sockets library and develop my own
protocol. I spent about a week creating client and server classes to provide
standard methods for communication over a network.

\item I integrated the client and server classes with the pod server (in
conjunction with the work Ant was doing) and the game. This involved making the
game send 'move' and 'joystick poll' commands to the pod server and receive a
response from it. I encountered a number of problems such as buffer overflows
and messages coming in out of order. I decided to re-factor the design of the
code to change to a binary protocol, which took around a week. After this, I
also made several other significant modifications to the network code to handle
the increasing requirements of the game more efficiently.  This involved
removing polling requests and threading the execution of communications on both
sides. 

\item I worked closely with Tom over about three weeks to integrate the pod's
joystick into the game. We had a huge number of problems when working on this
to do with noisy values and network latency. We ended up smoothing the
joystick's values but found it impacted hugely on the game as it depends so
closely on the input device readings. Eventually, we decided that it was not
satisfactory for the game, and instead I asked the department to purchase a USB
joystick.

\item At the end of March, just before Easter we decided to get the game
compiling on Linux so that we could work on it from home. Myself, Tom and Kenny
worked to make sure all of the code was compatible with gcc and Visual Studio.
Since then myself and Tom have worked to keep all of the code
platform-independent, and wrote and have maintained \verb"autoconfig" and
\verb"automake" scrpits to aid compilation and installation on a Linux platform.

\item I wrote a wrapper class for the OpenAL library to enable sound clips to
be played in the game.

\item I designed and created a system to manage all of the aspects of a players
progress through the game. This involved a system to manage each mode of play, a
class to manage the recording, saving and loading of high score records from
disk and a system where levels are unlocked in the game mode and the player's
progress is saved between sessions. The manager can then use a specific in-game
menu class to create and display menus using a base template layout. This also
required the development of a \verb"GameSession" class which is used to store
the score and progress of a player through the game and to integrate with the
high scores code.

\item I was responsible for all of the artwork. This included the logo, menu
design and images, in-game overlays, pick-up icons, textures and skyboxes. I also
created four of the final levels. 

\item I also produced a simple website that provides a platform to promote and
distribute the game.

\eit
